﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;

namespace PGE.AfastamentosTempMVC.Modelo
{
    [Table("Afastamento")]
    public class Afastamento
    {
        [Key]
        public int Id { get; set; }

        [Required(ErrorMessage = "Campo Funcionário é obrigatório.")]
        public int IdFuncionario { get; set; }

        [ForeignKey("IdFuncionario")]
        public virtual Funcionario Funcionario { get; set; }

        [Required(ErrorMessage = "Campo Setor é obrigatório.")]
        public int IdSetor { get; set; }

        [ForeignKey("IdSetor")]
        public virtual Setor Setor { get; set; }

        [Display(Name = "Núcleo")]
        public int IdNucleo { get; set; }

        [ForeignKey("IdNucleo")]
        public virtual Nucleo Nucleo { get; set; }

        [Required(ErrorMessage = "Campo Tipo Afastamento é obrigatório.")]
        public int IdTipoAfastamento { get; set; }

        [ForeignKey("IdTipoAfastamento")]
        public virtual TipoAfastamento TipoAfastamento { get; set; }

        [Column(TypeName = "varchar")]
        [Required(ErrorMessage = "Campo Descrição é obrigatório."), MaxLength(4000)]
        [Display(Name = "Descrição")]
        public string Descricao { get; set; }

        [Required(ErrorMessage = "Campo Período Inicial é obrigatório.")]
        [Display(Name = "Período Inicial")]
        public DateTime Periodo_Inicial { get; set; }

        [Required(ErrorMessage = "Campo Quantidade é obrigatório.")]
        [Display(Name = "Quantidade")]
        public int Qtde_Dias { get; set; }

        [Display(Name = "Período Final")]
        [DataType(DataType.Date)]
        public DateTime Periodo_Final { get; set; }

        [Display(Name = "Período Aquisitivo Inicial")]
        [DataType(DataType.Date)]
        public Nullable<DateTime> Periodo_AquiIni { get; set; }

        [Display(Name = "Período Aquisitivo Final")]
        [DataType(DataType.Date)]
        public Nullable<DateTime> Periodo_AquiFim { get; set; }

        [Column(TypeName = "varchar")]
        [Display(Name = "Número do Processo"), StringLength(20)]
        public string Num_Processo { get; set; }
    }
}
